﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ecommerce.Model;

namespace Ecommerce.Admin.Controles
{
    public partial class P_InfoEntrega : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Request.QueryString["IdPed"] != null)
                {
                    int IdPed = Convert.ToInt32(Request.QueryString["IdPed"]);
                    hddNumPedido.Value = IdPed.ToString();
                    CarregarInformacaoEntrega(IdPed);
                }
            }
        }

        private void CarregarInformacaoEntrega(int numPedido)
        {
            var pedido = PedidoModel.Instance.Obter(numPedido);
            var endereco = EnderecoModel.Instance.Obter(pedido.tb_ien_informacao_envio.FirstOrDefault().end_idt_endereco);
            var usuario = new UsuarioModel().Obter(pedido.pes_idt_pessoa);
            var informacaoEnvio = pedido.tb_ien_informacao_envio.FirstOrDefault();

            lblNome_v.Text = usuario.tb_pfi_pessoa_fisica.pfi_nom_pessoa_fisica;
            lblEmail_v.Text = usuario.usu_des_login;
            //lblTelefone_v.Text = usuario.tb_pfi_pessoa_fisica.tb_pes_pessoa.tb_tel_telefone

            lblBairro_v.Text = endereco.end_des_bairro;
            lblLogradouro_v.Text = endereco.end_nom_logradouro;
            lblNumero_v.Text = endereco.end_num_endereco.ToString();
            lblComplemento_v.Text = endereco.end_des_complemento;
            lblCidade_v.Text = endereco.end_nom_cidade;
            lblUF_v.Text = endereco.end_sig_uf;
            lblCEP_v.Text = endereco.end_num_cep;

            lblPeso_v.Text = ObterPesoPedido(pedido).ToString();
            lblFormaEnvio_v.Text = "";

            txtNumeroRastreamento.Text = informacaoEnvio.ien_cod_rastreamento;

            if (informacaoEnvio.ien_dat_envio_pedido.HasValue)
            {
                lblDataEnvio_v.Text = informacaoEnvio.ien_dat_envio_pedido.Value.ToString();
                btnPedidoEnviado.Enabled = false;
            }
            else
                lblDataEnvio_v.Text = "Entrega pendente";

            if (informacaoEnvio.ien_dat_recebimento_pedido.HasValue)
            {
                lblDataRecebimento_v.Text = informacaoEnvio.ien_dat_recebimento_pedido.Value.ToString();
                btnPedidoEntregue.Enabled = false;
            }
            else
                lblDataRecebimento_v.Text = "Recebimento Pendente";
        }

        private decimal ObterPesoPedido(tb_ped_pedido pedido)
        {
            decimal pesoTotal = 0;

            foreach (tb_ipe_item_pedido item in pedido.tb_ipe_item_pedido)
                pesoTotal = item.tb_pro_produto.pro_vlr_peso * item.ipe_qtd_item_pedido;

            return pesoTotal;
        }

        protected void btnAdicionarNumRastreamento_Click(object sender, EventArgs e)
        {
            int numPedido = Convert.ToInt32(hddNumPedido.Value);
            var pedido = PedidoModel.Instance.Obter(numPedido);
            var informacaoEnvio = pedido.tb_ien_informacao_envio.FirstOrDefault();
            informacaoEnvio.ien_cod_rastreamento = txtNumeroRastreamento.Text;

            PedidoModel.Instance.AtualizarInformacaoEnvio(informacaoEnvio);
        }

        protected void btnPedidoEnviado_Click(object sender, EventArgs e)
        {
            int numPedido = Convert.ToInt32(hddNumPedido.Value);
            var pedido = PedidoModel.Instance.Obter(numPedido);
            var informacaoEnvio = pedido.tb_ien_informacao_envio.FirstOrDefault();
            informacaoEnvio.ien_dat_envio_pedido = DateTime.Now;

            PedidoModel.Instance.AtualizarInformacaoEnvio(informacaoEnvio);

            this.CarregarInformacaoEntrega(numPedido);
        }

        protected void btnPedidoEntregue_Click(object sender, EventArgs e)
        {
            int numPedido = Convert.ToInt32(hddNumPedido.Value);
            var pedido = PedidoModel.Instance.Obter(numPedido);
            var informacaoEnvio = pedido.tb_ien_informacao_envio.FirstOrDefault();
            informacaoEnvio.ien_dat_recebimento_pedido = DateTime.Now;

            if (!informacaoEnvio.ien_dat_envio_pedido.HasValue)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "ok", "alert('Erro ao atualizar. Informe a data de envio')", true);
            }
            else
            {
                PedidoModel.Instance.AtualizarInformacaoEnvio(informacaoEnvio);
                this.CarregarInformacaoEntrega(numPedido);
            }
        }
    }
}